home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 1994 November / macformat-018.iso / Utility Spectacular / Text / Emacs-1.12d folder / lisp / scribe.elc < prev    next >
Encoding:
Text File  |  1993-11-09  |  7.7 KB  |  120 lines  |  [dELC/EMAC]

  1.  
  2. (defvar scribe-mode-syntax-table nil "\
  3. Syntax table used while in scribe mode.")
  4.  
  5. (defvar scribe-mode-abbrev-table nil "\
  6. Abbrev table used while in scribe mode.")
  7.  
  8. (defvar scribe-fancy-paragraphs nil "\
  9. *Non-NIL makes Scribe mode use a different style of paragraph separation.")
  10.  
  11. (defvar scribe-electric-quote nil "\
  12. *Non-NIL makes insert of double quote use `` or '' depending on context.")
  13.  
  14. (defvar scribe-electric-parenthesis nil "\
  15. *Non-NIL makes parenthesis char ( (]}> ) automatically insert its close
  16. if typed after an @Command form.")
  17.  
  18. (defconst scribe-open-parentheses "[({<" "\
  19. Open parenthesis characters for Scribe.")
  20.  
  21. (defconst scribe-close-parentheses "])}>" "\
  22. Close parenthesis characters for Scribe.  These should match up with
  23. scribe-open-parenthesis.")
  24.  
  25. (if (null scribe-mode-syntax-table) (let ((st (syntax-table))) (unwind-protect (progn (setq scribe-mode-syntax-table (copy-syntax-table text-mode-syntax-table)) (set-syntax-table scribe-mode-syntax-table) (modify-syntax-entry 34 "    ") (modify-syntax-entry 92 "    ") (modify-syntax-entry 64 "w   ") (modify-syntax-entry 60 "(>  ") (modify-syntax-entry 62 ")<  ") (modify-syntax-entry 91 "(]  ") (modify-syntax-entry 93 ")[  ") (modify-syntax-entry 123 "(}  ") (modify-syntax-entry 125 "){  ") (modify-syntax-entry 39 "w   ")) (set-syntax-table st))))
  26.  
  27. (defvar scribe-mode-map nil)
  28.  
  29. (if scribe-mode-map nil (setq scribe-mode-map (make-sparse-keymap)) (define-key scribe-mode-map "    " (quote scribe-tab)) (define-key scribe-mode-map "    " (quote tab-to-tab-stop)) (define-key scribe-mode-map "s" (quote center-line)) (define-key scribe-mode-map "}" (quote up-list)) (define-key scribe-mode-map "S" (quote center-paragraph)) (define-key scribe-mode-map "\"" (quote scribe-insert-quote)) (define-key scribe-mode-map "(" (quote scribe-parenthesis)) (define-key scribe-mode-map "[" (quote scribe-parenthesis)) (define-key scribe-mode-map "{" (quote scribe-parenthesis)) (define-key scribe-mode-map "<" (quote scribe-parenthesis)) (define-key scribe-mode-map "c" (quote scribe-chapter)) (define-key scribe-mode-map "S" (quote scribe-section)) (define-key scribe-mode-map "s" (quote scribe-subsection)) (define-key scribe-mode-map "e" (quote scribe-insert-environment)) (define-key scribe-mode-map "" (quote scribe-bracket-region-be)) (define-key scribe-mode-map "[" (quote scribe-begin)) (define-key scribe-mode-map "]" (quote scribe-end)) (define-key scribe-mode-map "i" (quote scribe-italicize-word)) (define-key scribe-mode-map "b" (quote scribe-bold-word)) (define-key scribe-mode-map "u" (quote scribe-underline-word)))
  30.  
  31. (defun scribe-mode nil "\
  32. Major mode for editing files of Scribe (a text formatter) source.
  33. Scribe-mode is similar text-mode, with a few extra commands added.
  34. \\{scribe-mode-map}
  35.  
  36. Interesting variables:
  37.  
  38. scribe-fancy-paragraphs
  39.   Non-nil makes Scribe mode use a different style of paragraph separation.
  40.  
  41. scribe-electric-quote
  42.   Non-nil makes insert of double quote use `` or '' depending on context.
  43.  
  44. scribe-electric-parenthesis
  45.   Non-nil makes an open-parenthesis char (one of `([<{')
  46.   automatically insert its close if typed after an @Command form." (interactive) (byte-code "√à— à“!à”âà‘âà’≈√\"à
  47. âà÷Δ!à◊âà÷«!à◊ÿQâà÷…!àŸâ    à÷ !àÿâ
  48. à÷À!à⁄€‹ ›%â à÷Õ!àÉa Çbfiâ
  49. à÷œ!àfl‡ Pâà·!à‚„‰\"á" [scribe-mode-map mode-name major-mode nil local-abbrev-table scribe-mode-abbrev-table comment-start comment-start-skip scribe-open-parentheses comment-column comment-end paragraph-start scribe-close-parentheses paragraph-separate scribe-fancy-paragraphs compile-command scribe-mode-syntax-table kill-all-local-variables use-local-map "Scribe" scribe-mode define-abbrev-table make-local-variable "@Comment[" "]" 0 concat "\\(^[
  50. ]\\)\\|\\(^@\\w+[" "].*[" "]$\\)" "^$" "scribe " buffer-file-name set-syntax-table run-hooks text-mode-hook scribe-mode-hook] 16))
  51.  
  52. (defun scribe-tab nil (interactive) (byte-code "¿à¡cá" [nil "@\\"] 1))
  53.  
  54. (defun scribe nil "\
  55. Run Scribe on the current buffer." (interactive) (byte-code "¿à¡¬!á" [nil call-interactively compile] 2))
  56.  
  57. (defun scribe-envelop-word (string count) "\
  58. Surround current word with Scribe construct @STRING[...].  COUNT
  59. specifies how many words to surround.  A negative count means to skip 
  60. backward." (byte-code "``… À !?ÖDÃh!ÕUÖŒœ ^!à`âà–—
  61. “Q!É0”‘!Ç:    bà’÷!à”œ!àŒ ◊]!à`âàbà
  62.  
  63. GWÖnäÿŸ
  64. H!    Δ#ÜfÿŸ
  65. H!    Δ#)Ön
  66. TâÖv àÇHà
  67.  
  68. GYÉî    bà⁄€‹#àbà⁄›‹#Ç¥    bà
  69. Hcàbà⁄fi
  70. H#à    bà”fl!à‡!,á" [spos epos ccoun noparens count scribe-open-parentheses t scribe-close-parentheses string 0 nil zerop char-syntax 119 forward-sexp -1 looking-at "@\\w[" "]" forward-char 2 skip-chars-backward "\\W" 1 search-forward char-to-string insert "@end(" ")" "@begin(" "@" 3 skip-chars-forward] 19))
  71.  
  72. (defun scribe-underline-word (count) "\
  73. Underline COUNT words around point by means of Scribe constructs." (interactive "p") (byte-code "¡à¬√\"á" [count nil scribe-envelop-word "u"] 3))
  74.  
  75. (defun scribe-bold-word (count) "\
  76. Boldface COUNT words around point by means of Scribe constructs." (interactive "p") (byte-code "¡à¬√\"á" [count nil scribe-envelop-word "b"] 3))
  77.  
  78. (defun scribe-italicize-word (count) "\
  79. Italicize COUNT words around point by means of Scribe constructs." (interactive "p") (byte-code "¡à¬√\"á" [count nil scribe-envelop-word "i"] 3))
  80.  
  81. (defun scribe-begin nil (interactive) (byte-code "¡à¬cà√ƒ!à≈Δ«\"à»… Q!á" [scribe-open-parentheses nil "
  82. " forward-char -1 scribe-envelop-word "Begin" 0 re-search-forward "[" "]"] 6))
  83.  
  84. (defun scribe-end nil (interactive) (byte-code "¡à¬cà√ƒ!à≈Δ«\"à»… Q!á" [scribe-open-parentheses nil "
  85. " forward-char -1 scribe-envelop-word "End" 0 re-search-forward "[" "]"] 6))
  86.  
  87. (defun scribe-chapter nil (interactive) (byte-code "¡à¬cà√ƒ!à≈Δ«\"à»… Q!á" [scribe-open-parentheses nil "
  88. " forward-char -1 scribe-envelop-word "Chapter" 0 re-search-forward "[" "]"] 6))
  89.  
  90. (defun scribe-section nil (interactive) (byte-code "¡à¬cà√ƒ!à≈Δ«\"à»… Q!á" [scribe-open-parentheses nil "
  91. " forward-char -1 scribe-envelop-word "Section" 0 re-search-forward "[" "]"] 6))
  92.  
  93. (defun scribe-subsection nil (interactive) (byte-code "¡à¬cà√ƒ!à≈Δ«\"à»… Q!á" [scribe-open-parentheses nil "
  94. " forward-char -1 scribe-envelop-word "SubSection" 0 re-search-forward "[" "]"] 6))
  95.  
  96. (defun scribe-bracket-region-be (env min max) (interactive "sEnvironment: 
  97. r") (byte-code "√àäbàƒ≈    Δ#à
  98. bàƒ«    Δ#)á" [max env min nil insert "@end(" ")
  99. " "@begin("] 5))
  100.  
  101. (defun scribe-insert-environment (env) (interactive "sEnvironment: ") (byte-code "¡à¬``#à√ƒ!à≈càΔ«!á" [env nil scribe-bracket-region-be forward-line 1 10 forward-char -1] 4))
  102.  
  103. (defun scribe-insert-quote (count) "\
  104. If scribe-electric-quote is non-NIL, insert ``, '' or \" according
  105. to preceding character.  With numeric arg N, always insert N \" characters.
  106. Else just insert \"." (interactive "P") (byte-code "ΔàÜ    ?É«»!!ÇÛΔΔΔh…UÉ# ÇÒoÉ+ÀÇÒäÃÀ`ÕZ≈#Ö7`)äÃŒ`ÕZ≈#ÖE`)äÜ`–Z≈#ÖS`)âà ?É|
  107. ?ÉeÀÇy ?ÉnŒÇy
  108. VÉxŒÇyÀÇÒ ?ÖÉ
  109. ?ÉäœÇÒ Öñ
  110. ?Öñ VÉùœÇÒ Ö©
  111. ?Ö© VÉ∞ÀÇÒ
  112. Öº ?Öº
  113. VÉ√œÇÒ
  114. ֜ ?֜
  115. VÉ÷ŒÇÒ
  116. VÖfl VÉÊœÇÒ
  117. VÉŒÇÒÀc+á" [count scribe-electric-quote lastfore lastback lastquote t nil self-insert-command prefix-numeric-value 92 34 "``" search-backward 1000 "''" "\"" 100] 8))
  118.  
  119. (defun scribe-parenthesis (count) "\
  120. If scribe-electric-parenthesis is non-NIL, insertion of an open-parenthesis
  121. character inserts the following close parenthesis character if the
  122. preceding text is of the form @Command." (interactive "P") (byte-code "≈à»…!!à≈≈≈Ü ?É≈ÇTä À!à`âàÃÕP!àŒgœ\"Ö7–` S\"â)à    ÖJ—“”h!!\"âÖTä
  123. Hc)+á" [count at-command paren-char point-save scribe-electric-parenthesis nil scribe-open-parentheses scribe-close-parentheses self-insert-command prefix-numeric-value forward-char -1 skip-chars-backward "^ 
  124.      " equal 64 /= string-match regexp-quote char-to-string] 11))
  125.